"""
匿名函数
    关键字lambda用于定义一种特殊的函数——匿名函数，又称lambda函数。匿名函数并非没有名字，而是将函数名作为函数结果返回，其基本语法格式如下。
语法：函数名 = lambda [参数列表]:表达式
    简单地说，lambda函数用于定义简单的、能够在一行内表示的函数，返回一个函数名
    例如：
        定义lambda函数，用于计算两个数的和，并将函数名赋给sum
        sum = lambda arg1, arg2: arg1 + arg2
        #调用sum()函数，输出返回值结果为30
        print('两数相加后的值为：', sum(10, 20))
     lambda函数常用在临时需要一个类似于函数的功能，但又不想定义函数的场合。例如，作为内置函数sorted()和列表方法sort()的key参数

【例5-17】将学生信息（包括学号、姓名和成绩）按成绩升序排序后输出。
【问题分析】 首先使用字典存储每个学生的信息，再用列表存储多个学生信息。然后使用sort()方法对列表按学生成绩进行升序排序，并使用lambda函数作为参数key的值
"""

# 匿名函数  lambda函数
# 写法1
add = lambda x, y: x + y
result = add(1, 2)
print(result)

# 写法2
result3 = (lambda x, y: x + y)(1,2)
print(result3)

# 以上函数相当于普通函数
def add1(x,y):
    return x + y
result1 = add1(1,2)
print(result1)

#定义学生信息列表，元素为字典
stu = [
    {'num': '201801', 'name': '王五', 'score': 89},
    {'num': '201802', 'name': '刘军', 'score': 95},
    {'num': '201803', 'name': '李梦', 'score': 85}
]
"""
list.sort(key=None, reverse=False)
参数      	说明	                            默认值
key     	指定排序依据的函数               	None
reverse	    排序方向：True=降序，False=升序	False
"""
stu.sort(key=lambda x: x['score'])#按成绩升序排序

for s in stu:
    #输出列表中的元素
    print('学号:',s['num'],'姓名:',s['name'],'成绩:',s['score'])